﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO_MechSys;
using System.Data.SqlClient;
using System.Data;

namespace DAL_MechSys
{
    public class DALGasto : DALBase
    {
        public void Excluir(int gastoID)
        {
            try
            {
                string storedProssidere = "sp_ExcluirGasto";
                SqlParameter[] parameters =

                        {                    
                           new SqlParameter("@gastoID", gastoID)                                    
                        };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Inserir(DTOGasto dtoGasto)
        {
            try
            {
                string storedProssidere = "sp_InserirGasto";
                SqlParameter[] parameters =
                
                { 
                   new SqlParameter("@descricao", dtoGasto.Descricao),
                   new SqlParameter("@valor", dtoGasto.Valor),
                   new SqlParameter("@valorFixo", dtoGasto.ValorFixo),
                   new SqlParameter("@fornecedorID", dtoGasto.FornecedorID),                       
                   new SqlParameter("@frequencia", dtoGasto.Frequencia),
                   new SqlParameter("@repetir", dtoGasto.Repetir),

                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public void Atualizar(DTOGasto dtoGasto)
        {
            try
            {
                string storedProssidere = "sp_AtualizarGasto";
                SqlParameter[] parameters =

                {                  
                   new SqlParameter("@descricao", dtoGasto.Descricao),
                   new SqlParameter("@valor", dtoGasto.Valor),
                   new SqlParameter("@valorFixo", dtoGasto.ValorFixo),
                   new SqlParameter("@fornecedorID", dtoGasto.FornecedorID),                       
                   new SqlParameter("@frequencia", dtoGasto.Frequencia),
                   new SqlParameter("@repetir", dtoGasto.Repetir),        
                   new SqlParameter("@gastoID", dtoGasto.GastoID),
                };
                ExecuteNonQuery(storedProssidere, parameters);

            }

            catch (SqlException)
            {
                throw;
            }
        }

        public List<DTOGasto> BuscarGastoCadastrados()
        {
            List<DTOGasto> lstProduto = new List<DTOGasto>();

            try
            {
                string storedProssidere = "sp_BuscarGastosCadastrados";
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere))
                {
                    while (sqlDataReader.Read())
                    {

                        DTOGasto dtoGasto = CriarGasto(sqlDataReader);

                        lstProduto.Add(dtoGasto);

                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstProduto;
        }
   

        private DTOGasto CriarGasto(SqlDataReader sqlDataReader)
        {
            try
            {
                DTOGasto dtoGasto = new DTOGasto();

                if (!string.IsNullOrEmpty(sqlDataReader["GastoID"].ToString()))
                {
                    dtoGasto.GastoID = (int)sqlDataReader["GastoID"];
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Descricao"].ToString()))
                {
                    dtoGasto.Descricao = (string)sqlDataReader["Descricao"];
                }


                if (!string.IsNullOrEmpty(sqlDataReader["FornecedorID"].ToString()))
                {
                    dtoGasto.FornecedorID = (int)sqlDataReader["FornecedorID"];
                }


                if (!string.IsNullOrEmpty(sqlDataReader["Valor"].ToString()))
                {
                    dtoGasto.Valor = float.Parse(sqlDataReader["Valor"].ToString());
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Frequencia"].ToString()))
                {
                    dtoGasto.Frequencia = (Int32.Parse(sqlDataReader["Frequencia"].ToString()));
                    
                }

                if (!string.IsNullOrEmpty(sqlDataReader["ValorFixo"].ToString()))
                {
                    dtoGasto.ValorFixo = bool.Parse(sqlDataReader["ValorFixo"].ToString());
                }

                if (!string.IsNullOrEmpty(sqlDataReader["Repetir"].ToString()))
                {
                    dtoGasto.Repetir = bool.Parse(sqlDataReader["Repetir"].ToString());
                }

                return dtoGasto;
            }
            catch (Exception)
            {
                throw;
            }
        }

        public List<DTOGasto> PesquisarGastos(string descricao, int codigo)
        {
            List<DTOGasto> lstGasto = new List<DTOGasto>();

            try
            {
                string storedProssidere = "sp_BuscarGastoPesquisa";

                SqlParameter[] parameters =                
                { 
                   new SqlParameter("@string", descricao),
                   new SqlParameter("@int", codigo)

                };
                using (SqlDataReader sqlDataReader = ExecuteReader(storedProssidere, parameters))
                {
                    while (sqlDataReader.Read())
                    {
                        DTOGasto dtoProduto = CriarGasto(sqlDataReader);

                        lstGasto.Add(dtoProduto);
                    }
                }
            }
            catch (SqlException)
            {
                throw;
            }
            return lstGasto;
        }
    }
}
